Python键鼠控制之PyAutoGUI方法 您所在的位置:网站首页 pyautogui 右键 浏览器 无效 Python键鼠控制之PyAutoGUI方法

Python键鼠控制之PyAutoGUI方法

2024-07-12 20:39| 来源: 网络整理| 查看: 265

前言

   PyAutoGUI 是一个 Python 库,用于在桌面应用程序中自动化鼠标和键盘操作。它提供了一组简单而强大的方法,使得开发者可以编写脚本来模拟用户的鼠标点击、键盘输入以及屏幕截图等操作。PyAutoGUI 可以用于自动化重复性任务、测试 GUI 应用程序、创建自定义的自动化工具等场景。

以下是 PyAutoGUI 的一些主要特点:

跨平台性:PyAutoGUI 可以在 Windows、macOS 和 Linux 上运行,并提供了一致的 API接口,使得开发者可以编写跨平台的自动化脚本。鼠标和键盘控制:PyAutoGUI 提供了丰富的方法来模拟鼠标移动、点击、拖拽以及键盘输入等操作,使得可以轻松地自动化各种基于 GUI的任务。屏幕信息和截图:PyAutoGUI 支持获取屏幕大小、鼠标位置等信息,并可以对屏幕进行截图、图像识别等操作,方便进行自动化任务的处理。灵活性和易用性:PyAutoGUI 的方法设计简单直观,使用起来非常方便,同时提供了一些参数来定制操作的行为,满足不同场景下的需求。

PyAutoGUI官方文档

安装命令:pip install pyautogui

一、屏幕信息

   左上角的像素位于坐标 0, 0。如果屏幕的分辨率为 1920 x 1080,则右下角的像素将为 1919, 1079(因为坐标从 0 开始,而不是 1)

0,0 X increases --> +---------------------------+ | | Y increases | | | | 1920 x 1080 screen | | | | V | | | | +---------------------------+ 1919, 1079 import pyautogui # 获取屏幕尺寸(打印显示的是完整尺寸,操作时,从0开始) screen_size = pyautogui.size() print(screen_size) # 结果:Size(width=1920, height=1080) width, height = pyautogui.size() print(width, height) # 结果:1920 1080 # 获取鼠标当前位置 mouse_position = pyautogui.position() print(mouse_position) # 结果:Point(x=960, y=540) # 判断坐标是否在屏幕范围内(范围内) onScreen(x, y) onscreen = pyautogui.onScreen(100, 200) print(onscreen) # 结果:True # 判断坐标是否在屏幕范围内(范围外) onscreen = pyautogui.onScreen(100, 4000) print(onscreen) # 结果:False 二、鼠标操作 实时获取鼠标位置 import pyautogui print('Press Ctrl-C to quit.') try: while True: x, y = pyautogui.position() positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4) print(positionStr, end='') print('\b' * len(positionStr), end='', flush=True) except KeyboardInterrupt: print('\n') 鼠标移动 import pyautogui # 将鼠标移动到屏幕坐标 (x=200, y=300) 的位置,移动过程耗时 1 秒钟 pyautogui.moveTo(200, 300, duration=1) # 相对于当前鼠标位置,向右移动 200 像素,向下移动 500 像素,移动过程耗时 1 秒钟 pyautogui.moveRel(200, 500, duration=1) # 相对于当前鼠标位置,向左移动 200 像素,向上移动 500 像素,移动过程耗时 1 秒钟 pyautogui.moveRel(-200, -500, duration=1) 鼠标点击

  click(x=None, y=None, button=‘left’, clicks=1, interval=0.0)

    模拟鼠标单击操作。如果指定了 (x, y) 坐标,则会先将鼠标移动到该坐标,然后进行单击操作,默认使用左键单击。clicks 参数指定单击次数,interval 指定单击之间的间隔时间。

import pyautogui # 在屏幕坐标 (x=100, y=100) 的位置点击鼠标左键,点击过程耗时 1 秒钟 pyautogui.click(100, 100, duration=1) # 在屏幕坐标 (100, 100) 的位置点击鼠标左键两次 pyautogui.click(100, 100, clicks=2) # 在屏幕坐标 (100, 100) 的位置点击鼠标左键两次,且点击间隔时间为 3 秒钟 pyautogui.click(100, 100, clicks=2, interval=3) # 在屏幕坐标 (100, 100) 的位置点击鼠标左键,使用 button='left' 指定左键 pyautogui.click(100, 100, button='left') # 在屏幕坐标 (100, 200) 的位置点击鼠标右键,使用 button='right' 指定右键 pyautogui.click(100, 200, button='right') # 在屏幕坐标 (100, 300) 的位置点击鼠标中键,使用 button='middle' 指定中键 pyautogui.click(100, 300, button='middle') 鼠标双击

  doubleClick(x=None, y=None, button=‘left’, interval=0.0)

    模拟鼠标双击操作,参数意义与 click() 方法类似。

import pyautogui # 在屏幕坐标 (100, 100) 处进行双击操作,使用的是鼠标左键 pyautogui.doubleClick(100, 100) # 在屏幕坐标 (100, 100) 处进行双击操作,使用的是鼠标右键 pyautogui.doubleClick(100, 100, button='right') # 在屏幕坐标 (100, 100) 处进行双击操作,使用的是鼠标中键 pyautogui.doubleClick(100, 100, button='middle') 鼠标按压释放 import pyautogui # 鼠标移动代码... # 模拟按下鼠标按钮,当前是左键。这个函数会让鼠标一直保持按下状态 pyautogui.mouseDown() # 释放之前按下的鼠标按钮,使其恢复弹起状态 pyautogui.mouseUp() 鼠标拖动 import pyautogui # 将鼠标光标从当前位置拖动到屏幕上的坐标 (95, 50) 的位置(默认使用左键进行拖动,可以使用参数 button='*' 进行修改) pyautogui.dragTo(95, 50, duration=1) # 将鼠标光标相对于当前位置向右拖动 500 像素,向下拖动 300 像素,拖动过程持续 1 秒钟 pyautogui.dragRel(500, 300, duration=1) # 将鼠标光标相对于当前位置向左拖动 500 像素,向上拖动 300 像素,拖动过程持续 1 秒钟 pyautogui.dragRel(-500, -300, duration=1) 鼠标滚动 import pyautogui # 鼠标移动代码... # 向上滚动1000个单位 pyautogui.scroll(1000) # 向下滚动1000个单位 pyautogui.scroll(-1000) 三、键盘操作

键盘输入常用的方法: 在这里插入图片描述

获取键盘按键名称方法 import pyautogui # KEY_NAMES 属性获取了所有键盘按键的名称列表 key_names = pyautogui.KEY_NAMES print(key_names) keyDown和keyUp方法 # 模拟按下 Windows 键 pyautogui.keyDown('win') # 模拟释放 Windows 键(如果有按下,一定记得写释放,否则手动操作键盘可能会存在问题) pyautogui.keyUp('win') typewrite方法 # 演示用的浏览器,鼠标移动到浏览器搜索框点击,软件再进行键盘操作 pyautogui.click(145, 60) # 模拟逐个字符地输入字符串,并在每个字符输入之间有 0.1 秒的间隔 pyautogui.typewrite('python', interval=0.1) # 按顺序依次输入列表中的每个元素。'space' 表示空格键 pyautogui.typewrite(['s', 'r', 'f', 'space'], interval=0.2) # 模拟按下回车键 pyautogui.typewrite(['enter']) press方法 # 模拟按下和释放 Enter 键 pyautogui.press('enter') # 模拟按下和释放右键箭头键两次,间隔为0.5秒 pyautogui.press('right', presses=2, interval=0.5) hotkey方法 # 模拟按下和释放 Ctrl+shift+esc 组合键,打开任务管理器 pyautogui.hotkey('ctrl', 'shift', 'esc') 组合示例 import pyautogui import pyperclip # 演示用的浏览器,鼠标移动到浏览器搜索框点击,软件再进行键盘操作 pyautogui.click(145, 60) """示例一""" # 输入 ! pyautogui.keyDown('shift') pyautogui.press('1') pyautogui.keyUp('shift') """示例二""" # 复制文本到剪贴板中 text_to_copy = "Hello, world!" pyperclip.copy(text_to_copy) # 执行粘贴操作 pyautogui.hotkey('ctrl', 'v') 四、屏幕截图 import os import pyautogui # 定义截图存放路径 folder_path = r'C:\Users\admin\Desktop' file_path = os.path.join(folder_path, 'screenshot.png') # 对整个屏幕进行截图 screenshot = pyautogui.screenshot() screenshot.save(file_path) # 对指定区域进行截图 x, y, width, height = 100, 100, 300, 400 region = (x, y, width, height) screenshot = pyautogui.screenshot(region=region) screenshot.save(file_path) 五、定位功能

   pyautogui.locateOnScreen() 是一个在屏幕上查找指定图片的方法。它会比较屏幕截图与给定图片的相似度,然后返回匹配成功的图片位置。你可以使用这个方法来定位屏幕上的特定图片。

图片尽量用系统自带的截图工具进行截图,其他截图工具,可能会导致识别不准,如识别有偏差请设置confidence参数 import pyautogui # 在屏幕上查找图像并获取位置信息,并设置匹配的置信度阈值为 0.9(取值范围为 0 到 1)confidence可选 location = pyautogui.locateOnScreen('CSDN.png', confidence=0.9) # 输出位置信息以及位置的左上角坐标 print(location, location[0], location.top) # 结果:Box(left=396, top=385, width=30, height=25) 396 385 # left=396 表示图像左边缘距离屏幕左侧有 396 个像素 # top=385 表示图像的顶部边缘距离屏幕顶部有 385 个像素 # 计算图像位置的中心点坐标 center = pyautogui.center(location) # 输出中心点坐标以及 x 坐标 print(center, center[0]) # 结果:Point(x=411, y=397) 411 # x=411 表示中心点的 x 坐标位于屏幕上的第 411 个像素位置

当前有一个需求,需要在 CSDN 页面对10篇文章进行点赞,那我们应该如何实现这个功能了?

第一步,CSDN网站账号登录第二步,先使用系统工具截取点赞图标 在这里插入图片描述第三步,代码实现 import pyautogui import time import webbrowser def article_likes(): """定位到点赞按钮点击""" count = 10 while count > 0: time.sleep(0.3) try: location = pyautogui.locateOnScreen('CSDN1.png', confidence=0.7) center = pyautogui.center(location) pyautogui.click(center) print("点赞成功!") count -= 1 except TypeError: pyautogui.scroll(-500) print('当前页面没有找到目标,页面下翻...') except Exception as e: print(f"点赞失败:{e}") break if __name__ == "__main__": # 通过默认浏览器,打开CSDN网站 webbrowser.open("https://www.csdn.net/") article_likes()

以上只是介绍了一些常用的方法,如想了解详细的使用方法,请查阅官方文档。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有